package pakete2;

import java.io.Serializable;
import java.net.MalformedURLException;
import java.rmi.Naming;
import java.rmi.NotBoundException;
import java.rmi.RemoteException;
import java.sql.SQLException;

import javax.swing.table.AbstractTableModel;

public class ResultSetTableModel extends AbstractTableModel implements Serializable{

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private KudeatzaileInterfazea kud = null;

	/**
	 * ResulsetTableModel eraikitzailea
	 * 
	 */
	public ResultSetTableModel() {
		
		// urruneko klasearekin
		try {
			KudeatzaileInterfazea kud = (KudeatzaileInterfazea) Naming.lookup("rmi://127.0.0.1/kudeatzaile2");
			
		} catch (MalformedURLException e) {
			System.out.println("malformed exception");
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (RemoteException e) {

			System.out.println("remote exception");
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (NotBoundException e) {

			System.out.println("not bound exception\nsuposatzen dugu rmi erregistroan ez duela ezer aurkitu");
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

	setQuery("SELECT * FROM gertakaria");

	}


	/**
	 * Zutabe kopurua itzultzen du
	 * 
	 * @return zutabe kopurua
	 */
	public int getColumnCount() {
		try {
			KudeatzaileInterfazea kude = (KudeatzaileInterfazea) Naming.lookup("rmi://localhost/kudeatzailea");
			return kude.getColumnCount();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (RemoteException e) {
			e.printStackTrace();
		} catch (MalformedURLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (NotBoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return 0;
	}

	/**
	 * zutabearen posizioa emanda bere izena itzultzen du
	 * 
	 * @param zutabearen
	 *            posizioa
	 * @return zutabearen izena
	 */
	public String getColumnName(int column) {
		try {
			KudeatzaileInterfazea kude = (KudeatzaileInterfazea) Naming.lookup("rmi://localhost/kudeatzailea");
			return kude.getColumnName(column + 1);
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (RemoteException e) {
			e.printStackTrace();
		} catch (MalformedURLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (NotBoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return "";
	}

	/**
	 * taulak dituen lerro kopurua itzultzen du
	 * 
	 * @return taulak dituen lerro kopurua
	 */
	public int getRowCount() {
		try {
			KudeatzaileInterfazea kude = (KudeatzaileInterfazea) Naming.lookup("rmi://localhost/kudeatzailea");
			return kude.getNumberOfRows();
		} catch (RemoteException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (MalformedURLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (NotBoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return -1;
	}

	/**
	 * Pasatako lerro eta zutabeko objetua itzultzen du
	 * 
	 * @param lerro
	 *            kopurua
	 * @param zutabe
	 *            kopurua
	 * @return pasatako lerroa eta zutabean dagoen String-a
	 */
	
	public String getValueAt(int row, int column) {
		try {
			KudeatzaileInterfazea kude = (KudeatzaileInterfazea) Naming.lookup("rmi://localhost/kudeatzailea");
			kude.mugitu(row + 1);
		} catch (RemoteException e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		} catch (MalformedURLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (NotBoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		try {
			KudeatzaileInterfazea kude = (KudeatzaileInterfazea) Naming.lookup("rmi://localhost/kudeatzailea");
			return kude.getObject(column + 1);
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (RemoteException e) {
			e.printStackTrace();
		} catch (MalformedURLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (NotBoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return "";


	}

	/**
	 * parametro bidez pasatako galdera exekutatzen du datu basean eta berriro
	 * bistaratzen du taula
	 * 
	 * @param query
	 */
	public void setQuery(String query) {
		try {
			KudeatzaileInterfazea kude = (KudeatzaileInterfazea) Naming.lookup("rmi://localhost/kudeatzailea");
			kude.setQuery(query);
		} catch (SQLException e) {
			System.out.println("sql exception");
			e.printStackTrace();
		} catch (RemoteException e) {
			System.out.println("remote exception");
			e.printStackTrace();
		} catch (MalformedURLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (NotBoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		fireTableStructureChanged();
	}

	public void eguneratu() {
		try {
			KudeatzaileInterfazea kude = (KudeatzaileInterfazea) Naming.lookup("rmi://localhost/kudeatzailea");
			kude.setQuery("SELECT * FROM gertakaria");
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (RemoteException e) {
			e.printStackTrace();
		} catch (MalformedURLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (NotBoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

}
